#ifndef __MAPPER_HPP__
#define __MAPPER_HPP__ 1

#include <string> 

using namespace std; 

class Mapper 
{
public:
  Mapper(); 
  void emit(string key, string value);
  virtual void map(string input) = 0;
  virtual ~Mapper(); 
}; 

Mapper* createMapper(); 

#define REGISTER_MAPPER(USERCLS)		\
  Mapper* createMapper()			\
  {						\
    return (Mapper*)new USERCLS();		\
  }						
  
#endif
